// index.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
// const crypto = require('crypto');
Page({
  data: {
    motto: '房间列表',
    wxLoginInfo:{
      session_key:"rn119nvb3WlvVbsL5rGbJA==",
      openid:"odEEd6NDkXk1llQar2tA5695ce_8",
      nickName:"",
      avatarUrl: defaultAvatarUrl
    },
    hasUserInfo: false,
    canIUseGetUserProfile: wx.canIUse('getUserProfile'),
    canIUseNicknameComp: wx.canIUse('input.type.nickname'),
  },
  enterGame(data){
    wx.setStorage({
      key: this.data.wxLoginInfo.openid,
      data: this.data.wxLoginInfo,
      encrypt: false, // 若开启加密存储，setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
      success() {
        // wx.getStorage({
        //   key: ret.openid,
        //   encrypt: false, // 若开启加密存储，setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
        //   success(res) {
        //     console.log("用户信息：",res.data)
        //   }
        // })
      }
    })  
    
    let url = decodeURIComponent(getApp().globalData.serverUrl+'?room_id='+data[0].room_num+'&user_id='+this.data.wxLoginInfo.openid+'&user_index=0&nick_name='+this.data.wxLoginInfo.nickName+'&avatar_url='+this.data.wxLoginInfo.avatarUrl+'#GameRoomCotrol');
    //通过全局参数将页面传递到webview页面中
    getApp().globalData.gameUrl = url
    // 跳转到外部链接
    wx.navigateTo({
      url: '/pages/webview/webview?url=' + url
    });
  },
  UpdateUserInfo(openid,nickName,avatarUrl){
    wx.request({
      url: getApp().globalData.serverUrl+'api/GameWeiXinUpdtInfo', // 请求的接口地址
      data: {
        'user_id': openid,
        'nick':nickName,
        'avatar':avatarUrl
      }, // 请求参数，格式为对象
      header: {
        'content-type': 'application/x-www-form-urlencoded' // 设置请求的 header，content-type 默认为 'application/json'
      },
      method: 'POST', // 请求方法，默认为 'GET'
      dataType: 'json', // 如果设为 json，会尝试对返回的数据做一次 JSON.parse
      responseType: 'text', // 响应的数据类型，默认为 'text'
      success(res) {            
        const ret = JSON.parse(res.data)          
        console.log("修改玩家信息结果：",ret); // 请求成功后的回调函数
      },
      
      fail(err) {
        console.error('请求失败：', err); // 请求失败后的回调函数
      },
      complete() {
        console.log('请求完成'); // 请求完成后的回调函数（无论成功或失败都会执行）
      }
    });
  },
  onUnload(){
    
  },
  onLoad(){
    console.log("app:",wx.getAppBaseInfo())    
    wx.login({
      success: (res) => {
        // 使用res.code传输到服务器获取用户唯一ID值放置到系统中作为电话使用
        console.log("wx code:"+res.code)
        res.code = res.code
        const that = this        
        wx.request({
          url: getApp().globalData.serverUrl+'api/GameGetWeiXinUniID?code='+res.code, // 请求的接口地址
          data: {
            'code': res.code
          }, // 请求参数，格式为对象
          header: {
            'content-type': 'application/json' // 设置请求的 header，content-type 默认为 'application/json'
          },
          method: 'POST', // 请求方法，默认为 'GET'
          dataType: 'json', // 如果设为 json，会尝试对返回的数据做一次 JSON.parse
          responseType: 'text', // 响应的数据类型，默认为 'text'
          success(res) {            
            const ret = JSON.parse(res.data)          
            if (ret.code != 0){
              wx.showToast({
                title: '登录失败：',
                icon: 'error',
                duration: 5000
              })
            }else{ 
              const loginInfo = JSON.parse(ret.msg)
              if(loginInfo.length > 0){
                wx.showToast({
                  title: '你已经在游戏中即将跳转进入',
                  icon: 'info',
                  duration: 5000
                })
                // that.enterGame()
                // return
              }
              const userBaseInfo = JSON.parse(ret.data)
              that.setData({
                "wxLoginInfo.openid": userBaseInfo.openid
              })
              wx.getStorage({
                key: userBaseInfo.openid,
                encrypt: false, // 若开启加密存储，setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
                success(res) {
                  console.log("本地用户信息：",res.data)
                  wx.setStorageSync('session_id', res.data.session_key);
                  const {nickName,avatarUrl} = res.data
                  that.setData({
                    "wxLoginInfo.avatarUrl": avatarUrl,
                    "wxLoginInfo.nickName": nickName,
                    hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
                  })
                  //更新用昵称和头像
                  that.UpdateUserInfo(userBaseInfo.openid,nickName,avatarUrl)
                }
              })                               
            }
            console.log(ret); // 请求成功后的回调函数
          },
          fail(err) {
            console.error('请求失败：', err); // 请求失败后的回调函数
          },
          complete() {
            console.log('请求完成'); // 请求完成后的回调函数（无论成功或失败都会执行）
          }
        });
      },
    })
  },
  bindViewTap() {
    // wx.navigateTo({
    //   url: '../logs/logs'
    // })
    // let url = decodeURIComponent(getApp().globalData.serverUrl+'guandan/threeJSguandan/game_guandan_room.html?room_id=204&user_id=7916#GameRoomCotrol');
    // // 跳转到外部链接
    // wx.navigateTo({
    //   url: '/pages/webview/webview?url=' + url
    // });
  },
    // 使用 sessionKey 解密手机号码
  // decryptPhoneNumber(sessionKey, encryptedData, iv) {
  //   // base64 解码
  //   const sessionKeyBuffer = Buffer.from(sessionKey, 'base64');
  //   const encryptedDataBuffer = Buffer.from(encryptedData, 'base64');
  //   const ivBuffer = Buffer.from(iv, 'base64');

  //   try {
  //     // 解密
  //     const decipher = crypto.createDecipheriv('aes-128-cbc', sessionKeyBuffer, ivBuffer);
  //     let decoded = decipher.update(encryptedDataBuffer, 'binary', 'utf8');
  //     decoded += decipher.final('utf8');
  //     const phoneNumber = JSON.parse(decoded).phoneNumber;

  //     return phoneNumber;
  //   } catch (err) {
  //     console.error('解密失败', err);
  //     return '';
  //   }
  // },
  // 获取服务端调用凭证
  // https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx9df18ae00d6d7b9d&secret=055a8e48c21d8acd324a338b8f59bc59
  // 返回结果{"access_token":"82_kCwGnnxVs-Io3DmbI3JofAhIeH9-u_QoE_FFMUO846HgtVOuXqFQUYHUs6LVDeEH_zI9l9uFP0FFQ4_Qak11VgR9sZsPH7xNbDIzTK8YVY9thqZCiSZUc0TIgp8SJAaABABSJ","expires_in":7200}
  //POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN 
  onGetRealTimePhonenumber(e){
    const { code,encryptedData,iv } = e.detail
    // code=6c3816106798dfee1a26b95e6dfc3ed2c6bef9b3df8436215514780c9a3d488c
    // encryptedData="IMMNYDbg02AWQXURf45HyNm3AgKZyQJTJ/LfT+fujP3RmJVglZwSXP3K6QyMDYGYirVUoEBTcgth+dIYi1rk7gPz8189UnibWH67ohSmqC81PO8c/qZH6etfQq6D3VxYFKyk7IWhQdA99+uIvMJdf1Jr2rgwKMzD3ViqBSgqSbBkgp5vczjvJM4rYZxk7IjplqpSFieU/DUAJ3s7x0YTuQ=="
    // iv="s/Dax/jhb8Z3A1jHNxwaiA=="
    // code发送到服务端，服务器端通过tokenid获取真实电话号码，获取一次收费0.03元，测试额度是1000条
    const accountInfo = wx.getAccountInfoSync();
    console.log("code:",code,"encryptedData:",encryptedData,"iv:",iv)
  },
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    const { nickName } = this.data.wxLoginInfo
    // debugger
    if (avatarUrl){
      this.setData({
        "wxLoginInfo.avatarUrl": avatarUrl,
        hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
      })
    }
  },
  onInputChange(e) {
    const nickName = e.detail.value
    const { avatarUrl } = this.data.wxLoginInfo
    if(nickName){
      this.setData({
        "wxLoginInfo.nickName": nickName,
        hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl
      })
        getApp().globalData.wxLoginInfo = this.data.wxLoginInfo    
    }
  },
  //进入房间选择页面
  enterRoomSelect(){
    let url = decodeURIComponent(getApp().globalData.serverUrl+'?user_id='+this.data.wxLoginInfo.openid+'&session='+this.data.wxLoginInfo.session_key+'&nickName='+this.data.wxLoginInfo.nickName+'&avatarUrl='+this.data.wxLoginInfo.avatarUrl+'&code='+this.data.wxLoginInfo.openid+'#GameRoomJumpList');
    getApp().globalData.gameUrl = url
    // 跳转到外部链接
    wx.navigateTo({
      url: '/pages/webview/webview?url=' + url
    });
  },
   //进入房间类型选择页面
   enterRoomTypeSelect(){
    let url = decodeURIComponent(getApp().globalData.serverUrl+'?user_id='+this.data.wxLoginInfo.openid+'&session='+this.data.wxLoginInfo.session_key+'&nickName='+this.data.wxLoginInfo.nickName+'&avatarUrl='+this.data.wxLoginInfo.avatarUrl+'&code='+this.data.wxLoginInfo.openid+'#GameRoomTypeSelect');
    getApp().globalData.gameUrl = url
    // 跳转到外部链接
    wx.navigateTo({
      url: '/pages/webview/webview?url=' + url
    });
  },
  onBeginGameClick(e) {
    const that = this
    wx.request({
      url: getApp().globalData.serverUrl+'api/GameGetUserGameStatus?user_id='+this.data.wxLoginInfo.openid, // 请求的接口地址
      data: {
        'code': this.data.wxLoginInfo.openid
      }, // 请求参数，格式为对象
      header: {
        'content-type': 'application/json' // 设置请求的 header，content-type 默认为 'application/json'
      },
      method: 'POST', // 请求方法，默认为 'GET'
      dataType: 'json', // 如果设为 json，会尝试对返回的数据做一次 JSON.parse
      responseType: 'text', // 响应的数据类型，默认为 'text'
      success(res) {     
        const ret = JSON.parse(res.data)   
        if (ret.code == -1){
          //进入房间选择页面
          // that.enterRoomSelect()
          that.enterRoomTypeSelect()
        }else{ 
          //已经在游戏中进入游戏页面
          const loginInfo = JSON.parse(ret.data)
          if(loginInfo.length > 0){
            wx.showToast({
              title: '你已经在游戏中即将跳转进入',
              icon: 'info',
              duration: 5000
            })
            const data = JSON.parse(ret.data)
            that.enterGame(data)
            return
          }                                              
        }
        console.log(ret); // 请求成功后的回调函数
      },
      fail(err) {
        console.error('请求失败：', err); // 请求失败后的回调函数
      },
      complete() {
        console.log('请求完成'); // 请求完成后的回调函数（无论成功或失败都会执行）
      }
    });
    // const nickName = e.detail.value
    // // this.pageRouter.navigateTo({
    // //   url: '../logs/logs'
    // // })
    // // let url = decodeURIComponent(getApp().globalData.serverUrl+'guandan/threeJSguandan/game_guandan_room_wx.html?room_id=204&user_id='+this.data.wxLoginInfo.openid+'&nick_name='+this.data.userInfo.nickName+'&user_index=1&avatar_url='+this.data.userInfo.avatarUrl+'&user_index=2&join_type=转移#GameRoomCotrol');

    // wx.setStorage({
    //   key: this.data.wxLoginInfo.openid,
    //   data: this.data.wxLoginInfo,
    //   encrypt: false, // 若开启加密存储，setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
    //   success() {
    //     // wx.getStorage({
    //     //   key: ret.openid,
    //     //   encrypt: false, // 若开启加密存储，setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
    //     //   success(res) {
    //     //     console.log("用户信息：",res.data)
    //     //   }
    //     // })
    //   }
    // })  
    // let url = decodeURIComponent(getApp().globalData.serverUrl+'?room_id=204&user_id='+this.data.wxLoginInfo.openid+'&user_index=0&nick_name='+this.data.wxLoginInfo.nickName+'&avatar_url='+this.data.wxLoginInfo.avatarUrl+'#GameRoomCotrol');
    // getApp().globalData.gameUrl = url
    // // 跳转到外部链接
    // wx.navigateTo({
    //   url: '/pages/webview/webview?url=' + url
    // });
  },
  //转移牌面分享进入
  onBeginZhuanyiClick(e){
    const nickName = e.detail.value
    // this.pageRouter.navigateTo({
    //   url: '../logs/logs'
    // })
    wx.setStorage({
      key: this.data.wxLoginInfo.openid,
      data: this.data.wxLoginInfo,
      encrypt: false, // 若开启加密存储，setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
      success() {
        // wx.getStorage({
        //   key: ret.openid,
        //   encrypt: false, // 若开启加密存储，setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
        //   success(res) {
        //     console.log("用户信息：",res.data)
        //   }
        // })
      }
    })  
    let url = decodeURIComponent(getApp().globalData.serverUrl+'?room_id=204&user_id='+this.data.wxLoginInfo.openid+'&nick_name='+this.data.wxLoginInfo.nickName+'&user_index=1&avatar_url='+this.data.wxLoginInfo.avatarUrl+'&user_index=2&join_type=转移#GameRoomCotrol');
    getApp().globalData.gameUrl = url
    // 跳转到外部链接
    wx.navigateTo({
      url: '/pages/webview/webview?url=' + url
    });
  },
  // 启动存活更新定时器
  startAliveUpdate(){
      // 启动定时器，每1秒执行一次
      this.timer = setInterval(() => {
        this.onAliveUpdate()
      }, 3000);
  },
  onShow(){
    this.startAliveUpdate()
  },
  onHide(){     
    clearInterval(this.timer);
  },
  onAliveUpdate(){
    wx.request({
      url: getApp().globalData.serverUrl+'api/SystemMsgGet?user_id='+this.data.wxLoginInfo.openid, // 请求的接口地址
      data: {
        'code': this.data.wxLoginInfo.openid
      }, // 请求参数，格式为对象
      header: {
        'content-type': 'application/json' // 设置请求的 header，content-type 默认为 'application/json'
      },
      method: 'POST', // 请求方法，默认为 'GET'
      dataType: 'json', // 如果设为 json，会尝试对返回的数据做一次 JSON.parse
      responseType: 'text', // 响应的数据类型，默认为 'text'
      success(res) {     
        const ret = JSON.parse(res.data)   
        console.log("存活更新结果：",ret)
        if (ret.code == -1){
        }else{ 
        }
        console.log(ret); // 请求成功后的回调函数
      },
      fail(err) {
        console.error('请求失败：', err); // 请求失败后的回调函数
      },
      complete() {
        console.log('请求完成'); // 请求完成后的回调函数（无论成功或失败都会执行）
      }
    });
  },  
  onError(){
    console.log('ylp-eerrr')
  },
  authUserInfo(e){
    // 通过 wx.getSetting 查询用户是否已授权头像昵称信息
    wx.getSetting({
      success (res){
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: function(res) {
              console.log(res.userInfo)
            }
          })
        } else {
          // 否则，先通过 wx.createUserInfoButton 接口发起授权
          let button = wx.createUserInfoButton({
            type: 'text',
            text: '获取用户信息',
            style: {
              left: 10,
              top: 76,
              width: 200,
              height: 40,
              lineHeight: 40,
              backgroundColor: '#ff0000',
              color: '#ffffff',
              textAlign: 'center',
              fontSize: 16,
              borderRadius: 4
            }
          })
          button.onTap((res) => {
            // 用户同意授权后回调，通过回调可获取用户头像昵称信息
            console.log(res)
          })
        }
      }
    })
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
      wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          "userInfo.avatarUrl": res.userInfo.avatarUrl,
          hasUserInfo: true
        })
      }
    })
  },
})
